package com.sky.admin.service;



import com.sky.admin.domain.vo.SalesTop10ReportVO;
import com.sky.admin.domain.vo.TurnoverReportVO;
import com.sky.api.domain.vo.OrderReportVO;
import com.sky.api.domain.vo.UserReportVO;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.time.LocalDate;

/**
 * @author toki
 */
public interface ReportService {

    /**
     * 根据时间区间统计营业额
     *
     * @param beginTime 开始时间
     * @param endTime   结束时间
     * @return 营业额报告
     */
    TurnoverReportVO getTurnover(LocalDate beginTime, LocalDate endTime);

    /**
     * 根据时间区间统计用户数量
     *
     * @param begin 开始时间
     * @param end   结束时间
     * @return 用户统计报告
     */
    UserReportVO getUserStatistics(LocalDate begin, LocalDate end);

    /**
     * 订单数据统计
     *
     * @param begin 开始日期
     * @param end   结束日期
     * @return 订单统计报告
     */
    OrderReportVO getOrderStatistics(LocalDate begin, LocalDate end);

    /**
     * 查询指定时间区间内的销量排名top10
     *
     * @param begin 开始日期
     * @param end   结束日期
     * @return 销量排名top10
     */
    SalesTop10ReportVO getSalesTop10(LocalDate begin, LocalDate end);

    /**
     * 导出近30天的运营数据报表
     *
     * @param response 响应对象
     */
    void exportBusinessData(HttpServletResponse response) throws IOException;
}
